package com.zmn.plat.persistence.interfaces.orderconfig.serviceaudit;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.zmn.common.dto.StatusDTO;
import com.zmn.plat.model.entity.orderconfig.serviceaudit.OrderServiceAuditReason;
import com.zmn.plat.model.entity.orderconfig.serviceaudit.OrderServiceAuditReasonQuery;

/**
 * @author tanbiao
 * @description
 * @modifier
 * @since 2020/9/16 17:52
 **/
public interface OrderServiceAuditReasonDao {
    /**
     * ID 查询
     *
     * @param id
     *            分类ID
     * @return
     */
    OrderServiceAuditReason findByKey(int id);

    /**
     * 最大排序值
     *
     * @return
     */
    Integer findMaxSort();

    /**
     * ID 查询
     *
     * @param ids
     * @return
     */
    List<OrderServiceAuditReason> findByKeys(@Param("ids") List<Integer> ids);

    /**
     * 搜索
     *
     * @param query
     *            条件
     * @return
     */
    List<OrderServiceAuditReason> listByQuery(OrderServiceAuditReasonQuery query);

    /**
     * 分页搜索
     *
     * @param query
     *            条件
     * @return
     */
    List<OrderServiceAuditReason> listPageByQuery(OrderServiceAuditReasonQuery query);

    /**
     * 搜索统计
     *
     * @param query
     *            条件
     * @return
     */
    Integer countByQuery(OrderServiceAuditReasonQuery query);

    /**
     * 更新
     *
     * @param reason
     *            对象
     * @return
     */
    Integer updateByKey(OrderServiceAuditReason reason);

    /**
     * 更新排序
     *
     * @param reason
     *            条件
     * @return
     */
    Integer updateSortKey(OrderServiceAuditReason reason);

    /**
     * 更新首字母
     *
     * @param reason
     *            条件
     * @return
     */
    Integer updateFirstLetterByKey(OrderServiceAuditReason reason);

    /**
     * 批量更新状态
     *
     * @param dto
     *            条件
     * @return
     */
    int updateStatusBatch(StatusDTO dto);

    /**
     * 插入
     *
     * @param reason
     *            对象
     * @return
     */
    Integer insert(OrderServiceAuditReason reason);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    Integer deleteByKey(Integer id);
}
